USBORNE
... FOR. ..COMMODORE 64. . .VIC 2
. .TRS 80 32K . . BBC. .ELECTRON .
ORIGINALLY
PUBLISHED
now:
WEIRD
COMPUTER
GAMES
Jenny Tyler
:'.V
Contents
2 About this book
3 Tower of Terror
4 Skulls of The Pyramid
6 Monster Wrestling
8 Jaws
10 Flying Witches
12 Micropuzzle
17 Answers to puzzles
/ t *
1 ■
About this book
The programs in this book axe
written in a standard version of
BASIC and there are conversion
lines to type in for most of the main
types of home computers. Look
down the left-hand side of the
program for the symbol for your
computer and then look at the list of
changes for the correct version of
that line. The symbols for the various
computers are as follows:
a Commodore 64 and VIC 20
★BBC and Electron
^Spectrum
•Apple
■ TRS-80 (extended BASIC version)
About the games
The games in this book are very
simple. They are intended to help
you get used to your computer and
to the BASIC language by typing in
listings, debugging them and seeing
how they work. The programs do
not contain graphics or sound as
these vary so much from computer
to computer, but you can try adding
these.
You can change and adapt the
games as much as you like. There
are suggestions for ways of doing
this next to each program and you
can experiment with your own ideas
as well. This way you can use the
games in this book as a basis for
longer, more complicated games of
your own.
Typing and running the
programs
Remember, even short programs
can be quite difficult and time-
consuming to type in correctly.
Check each line as you go. It is so
easy to make mistakes, even if you
are quite experienced. When you
have typed in the whole listing,
check it again, making sure you
haven't missed any lines, spaces or
punctuation.
To start the game, type RUN. Read
the introduction to the game first so
that you have some idea of what you
are supposed to do before you start.
If the program doesn't work
properly, it is quite likely that there
is a mistake in it somewhere, so LIST
the program and check again.
When the game is over, the
computer may ask if you want to
play again or say something like
BREAK in 200, in which case you
must type RUN to play again.
Changing the speed
Some games depend on the speed .
of both your reactions and your
computer. You may find you need to
adjust the speed. You will find
instructions for doing this next to the
program listing.
Micropuzzle was written by Les Howarth
and Monster Wrestling by Adrian Hall.
Illustrated by Rob McCaig, Sue Walliker,
Martin Newton and Graham Smith.
Designed by Roger Priddy
First published in 1984 by Usborne
Publishing Ltd, 20 Garrick Street, London
WC2E 9BJ.
© 1984 Usborne Publishing Ltd
The name Usborne and the device *t±?ar<
Trade Marks of Usborne Publishing Ltd.
Tower of Terror $ Jjgsj"
Your mouth is dry, your legs are shaking and your heart is thumping - you've entered
the Tower of Terror . . .
} o Press G to move through the rooms. Agh! ! there's a skeleton, then a ghost, then a
headless axeman! With each fresh shock your pulse rate rockets.
Will you go on (G), or retreat (R) to recover a little? Watch the time - you've only got
until midnight to reach the top of the Tower and the coveted Treasure. Watch your
pulse rate too. Madness takes over when it reaches 1 50 and nothing can stop you
leaping to your doom out of the window.
C
Try changing the pulse
rate limit.
C
Can you work out how
to add more rooms too?
CD
10 G0SU& 470
20 LET RJ="600D LUCK"
30 LET Rrt=0
lOW LET H=9: LET M=INTiRNf>ll)#10>*10
50 LET P=5Q
)A60 CLS:PRINT:PRINT
70 PRINT 'TOWER OF TERROR"
90 PRINT ■==============="
90 PRINT : PRINT R$ "
100 LET R$="":LET FL=INT\Rrt/5>
110 LET ft=RM-FL*5+l
120 PRINT: PRINT "YOU ARE ON"
130 IF FL=0 THEN PRINT "THE GROUND FLOOR"
140 IF FL=6 THEN PRINT "THE TOP FLOOR"
150 IF FL>0 AND FL<i THEN PRINT "FLOOR "|FL
160 PRINT "IN ROOM ':R
170 PRINT: PRINT 'THE TINE IS ";H; ". ';»?' PIT
> 180 PRINT:PRINT "YOUR PULSE RATE IS ";P
190 LET GF=0
200 IF RM=30 THEN GOTO 350
IO2I0 LET TR=INT(RND(I)t9*l)
1^220 IF RNDU)>.6 THEN 50SUB 420
230 PRINT: PRINT "RETREAT OR GO ON (R/GP
>«A240 LET J$=INKEYJ
250 IF UO"G" AND [JO'R" THEN GOTO 240
260 IF I$=-G" THEN GDSUfl 400
270 IF I*="R" THEN LET RM=RM- 1 : LET P=P-5
230 IF RM--I THEN LET RM*0
290 LET H=H+INT(RND(1)#3H):IF M>59 THEN LET M=M-60:LET H=H+1
300 IF H=12 THEN GOTO 360
310 IF P>150 THEN GOTO 390
See if you can add more
nasties and change
their shock ratings.
!0 IF P<40 THEN LET P=40
G0SUB 520 ( What is the Treasure of
\ Tower and how did it
/ get there . . .? Perhaps
\ you can add your ideas
to the program.
a
$330 IF FL=TR AND RND(i)>0.5 THEN
340 60T0 60
350 PRINT "WELL DONE ":ST0P
360 PR1NT.-PRINT 'IT S MIDNIGHT!"
370 PRINT: PRINT "TOO LATE!":ST0P
380 PRINT "YOU HAVE GONE MAD AND"
390 PRINT "LEAPT FROM A WINDOW STOP
400 IF GF=1 THEN LET P=P+S*2:LET R$="
410 LET P=P-UL£T RK^RMHi RETURN
O420 LET TY=INT(RND(I>#3+1)
430 LET M=GWY)
l<X440 LET S=INT(RND(1I*5)+FL+TY*2
450 PRINT: PRINT "AHEAD YOU SEE A ";«*
460 LET SF=1 : RETURN
470 DIM 6$(3)
430 LET 6$U)='SKELET0N'
490 LET G$(2)='GH0ST U
500 LET G$13)="HEADIES5 AXEMAN"
510 RETURN
520 LET R$="Y0U FELL THROUGH A TRAP D00R!":LET RM=RM-5:LET P=P+10: RETURN
How it works
10: Goes to initialization section
to read in data.
30: RM is the room you're in.
40-50: Set the starting time and
pulse rate.
90: Prints any comment stored in RS.
100-160: Workout floor and room
you are in from value of RM and
print this information.
1 70-180: Print other information.
190: GF is a flag which is set
when there is a nasty ahead.
200; Checks if you've reached
the last room.
210: Selects room for trap door.
220: Random chance of there
being something ahead. Goes to c
subroutine if there is.
230-280: Get player's input and
act on it.
290: Increases time.
300: Tests for midnight.
4^310: Tests if pulse rate is too high.
*30: Checks if you are in room
with trap door.
400-410: Move forward routine.
Increase pulse if there's a nasty.
420-460: Select a type of nasty
and its shock rating.
470-510: Read in data for start of
game (initialization).
520: Trap door subroutine.
Conversion lines
$ 40,210,220,290.350,420,440 Replace
RNQU) Nith RND
■ 40,210,220,290,330,420,440 Replace
RND I l j kith RND 10)
▲ 60 PRINT CHR$(147J:PRINT:PRINT
• 60 HOME: PRINT: PRINT
• 240 LET I$=INK£YM0>
A 240 SET I*
• 240 I|="iIF PEEK(-16384i>127
THEN 6ET U
$ 470 DIM 61(3,15)
Imll/"
I. i.
Skulls oftfiePyramid
i
A mind without a body - that's all you've been since that terrible accident all
those years ago, during the building of The Pyramid.
It takes all your mental energy to satisfy the Evil Spirit Master's demands.
Every day he forces a number into your mind (if only you could turn him off!).
You must will skulls to fall of f The Pyramid onto the numbered stones below in an
attempt to score that number.
Press 1 , 2, 3 or 4 to release a skull. You must use five skulls each go - no more,
no less. Score the right number and rid yourself of the Curse of The Pyramid.
Increase the value of SP in J
line 10 to speed up the J
program. \
10 LET TS=0:LET IJ="C":LET SP=3
[20 LET N=INT(RNDI1)*30)+10
.30 CLS:PRINT
40 PRINT "SKULLS OF THE PYRAMIDS"
50 PRINT
PRINT "YDU ARE REBUIRED"
70 PRINT "TO GET ";N:PRINT
BO LET K=3000:G0SUB 540
•a 90 CLS: LET Y=2
100 FOR 1=1 TO 4
110 LET A*=STR$(I):LET X=6+2*I
120 60SUB 560
130 NEXT I
140 LET A$» ,A *tFQR 1=1 TO 5
150 LET Y=2+2*I
160 FOR J=l TO 1+3
70 LET X=7-I+2*J
180 G0SUB 560
190 NEXT J
200 NEXT I
210 LET Y=14
220 FOR 1=1 TO 9:LET A$=STR$(I)
230 LET X=1+2*I:G0SUB 560
240 NEXT I
250 LET S=0
260 FOR 1=1 TO 5
270 LET A$="CH0QSE ROM"
280 LET X=0:LET Y=0:60SUB 560
★•a 290 LET IMNKEY*
300 IF I*=""THEN GOTO 290
310 LET R=VAL(I*)
320 IF R<1 OR R>4 THEN GOTO 290
330 LET Y=3 j LET K=400:LET X=6+2*R
How the program worl
10: Sets variables at beginning of
game.
20: Chooses number that player
must score.
30-80: Print starting message and
wait for player to see it.
90-240: Print out pyramid and the
numbers at the top and bottom of it.
350 LET A$= a 0"
360 GOSUB 560
370 GOSUB 540
380 LET A$=" 11 : GOSUB 560
■$390 IF F=0 AND Y<13 THEN LET X=X+SGN (RND ( 1 ) 5)
400 LET Y=W:LET F=l-F
410 IF Y<14 THEN GOTO 350
420 LET S=SHX-l>/2
430 LET X=15:LET Y=0
440 LET A$=STRf(I)+":"+STR$(S)
450 GOSUB 560
460 NEXT I
470 LET K=1000:GOSUB 540
480 LET D=ABS(S-N):LET TS=TS+D
•A490 CLS?PRINT:PRINT
500 PRINT "YOUR RATING IS NOW ";TS
510 IF D>1 THEN LET K=3000:GOSUB 540:G0T0 20
520 PRINT "AND YOU CAN GO FREE!"
530 STOP
540 FOR T=l TO K STEP SP:NEXT T
550 RETURN
(•a 560 PRINT TABU,Y);A$
570 RETURN
350-320: Print the skull and wait.
380: Remove the skull.
390: Choose which way to
bounce (if value of F allows
sideways bounce).
400: Moves skull down one row.
410: Checks if skull has
the bottom.
430-450: Print out score.
470: Waits.
480-500: Add difference between
score and number required to
total score. Clear screen and
print score.
510: If difference is greater than
1, goes back for another go.
520:Prmtswinnmgmessage.
540-550: Subroutine to make
computer pause for length of
time depending on K.
560-570: Subroutine to move
cursor to position X, Y on the
screen.
Don't suppose
you're clever
enough to change
the limits of the
number to be
Conversion lines
$20,390 Replace RNDUi with RND
■ 20,390 Replace RND(l) with RND(0)
• 30,90,490 Replace CLS with HOME
A 30,90,490 Replace CLS with PRINT CHR$(147)
• 290 LET I*=INKEY$(0
• 290 I$= n ":IF PEEK(-16384)>127 THEN GET 1$
a 290 GET 1$
O560 PRINT AT Y,X;A$
• 560 VTAB ( Y+l > ; HTAB (X+l > : PRINT A$
A560 PRINT CHR*( 19) ; :F0R LL=1 TO Y:
PRINT: NEXT: PRINT TAB(X) ; A*
■ 560 PRINTS Y*32+X,A$;
Monster wrestling is a sport for lunatics! Which doesn't say much for you -the
brain in charge of this hulk of bone and muscle which is about to take on some of the
nastiest monsters in the Universe.
As brain, you must do a lot of quick and accurate calculations. You must work out
the muscular effort required to hold off the monster, for instance, and this involves
multiplying the size of the monster by the distance it is away from you.
If the numbers look too difficult, you can press the Panic Button (key P). You must
then work out how much adrenalin the body needs to survive the crisis, by
dividing heartbeat increase required by oxygen supply. Take care though, over-
use of the Panic Button puts too much strain on the heart and will eventually cause
a black out.
To live to fight another match, you must survive 12 rounds against the monster.
20 LET P=0
30 LET K=3
10 CLS
50 LET K»l
60 LET Y=6
70 LET N=-l
75 LET N=N+1
LET G=INT(RND(1)*Y+X)
LET I=INT(RND(1)*K+K)
100 LET Y=Y+0.5
110 LET M+0.5
120 LET K=K+0.5
130 PRINT
140 PRINT
150 PRINT "SIZE OF MONSTER:
160 PRINT G
170 PRINT
180 PRINT "DISTANCE AWAY: »
190 PRINT I
200 PRINT
210 PRINT "MUSCULAR EFFORT?
220 G0SUB 570
230 IF ZOGtl THEN GOTO 320
•a 240 CLS
250 PRINT "MONSTER KEPT AT BAY"
260 IF N<11 THEN GOTO 75
270 PRINT "PHEM!!!!-THE MONSTER"
PRINT "IS TIRED AND HAS GONE TO
PRINT "LOOK FOR ANOTHER VICTIM. "
300 PRINT "YOU SURVIVE TO TELL THE TALE!
310 STOP
•a 320 CLS
330 PRINT "YOU HAVE BEEN CRUSHED
340 PRINT "TO A PULP IN THE"
350 PRINT "MONSTER'S HUGE ARKS"
360 PRINT
370 PRINT "YOU SURVIVED »}».•' ROUNDS"
How the program works
20: Sets number of panics used to
30-60: Set upper limits for size of
ZO:Setsnumber of rounds.
80: Sets monster size.
90: Sets distance away.
100-120: Increase upper limits for
size and distance by 0.5 each
round.
210-220: Ask for answer and go to
subroutine to deal with it.
230: If answer incorrect, jumps
down program for losing
250: Message if round won.
260: Goes back for next round.
270-310: Winning message if you
survive 12 rounds.
330-380: Losing message.
If you keep losing,
you'd better slow the
program down by
increasing the value of
O in line 660.
280
C Decrease Q if the game
| is too easy for you.
Jaws
Mmmmmm . . . people do taste yummy! But, with The Hunter forever on your tail, it's
difficult to get close enough to catch them.
You are J (for Jaws) and you can move around by pressing keys A, Z, N and M. See
how many Ps (people) you can eat before H catches you. There's a snag (of course).
Each time you succeed in catching and devouring a delicious human being, you get so
OlO DIN HIH2):DIH K$(4>:G0SUB 660
20 LET S=0:L£T T=0: LET G=0
30 LET U=I
40 LET K$(1)= B A H :LET K$(2J="fl"
50 LET K*(3)='Z"rLET K$14)= I N U
60 LET PX=2:LET PY=2
70 BOSUB 600
80 6DSUB 490iGCSUB 440
90 LET NX=PX:LET NY=PY
★±•100 LET I*=INK£Y$
110 IF IJ=K$(1) THEN LET NY-NY-l
120 IF I$=K$(2> THEN LET NX=NX+I
130 IF I$=K$(3J THEN LET NY=NY*1
140 IF I$=U(4J THEN LET NX=NX-i
150 LET X=NX:LET Y=NY;60SUB 530
160 IF F=l THEN 60T0 230
170 LET X=PX:LET Y=PY: LET A5=" 1
180 GQSUB 640
190 LET X=NX;LET Y=NY:LET A$='T
200 6QSUB 640
210 LET PX=NX:LET PY=NY
220 IF PX=TX ANE PY=TY THEN G0SUB 340
230 IF PX=GX AND PY=GY THEN GOTO 280
■i£x240 IF RNDU> >U THEN GOSUB 370
250 LET X=14:LET Y=12:LET A$=STR$(T)
260 GD5UB 640
270 LET G=G+1;GQT090
280 FOR P=l TO 2000:NEU P
I dare you to make
the hunter move
more often
How the program works
10: Sets aside memory space for the
grid. Goes to subroutine to read in data
for grid.
20: Sets variables to zero for start.
30: Sets how often hunter moves.
40-50: Set directions in which keys
move.
Conversion lines
$10 DIM M(12,16):DM <$(4):G0SUB 660^
★ 100 LET 1*=INKEYH0>
• 100 I*= un :IF PEEK(-163B4)>127 THEN GET 1$
AiOO GET 1$
$240,390,400,550,560 Replace RND(l) with
■ 240,390,400,550,560 Replace RNDtl) with RND(0I
#290,600 Replace CLS with HOME
A290,600 Replace CLS mth PRINT CHRK147J
$539 LET F=0:IF n*lY,X><>" " THEN LET F=l
$640 PRINT AT Y,X;A$
•640 VTAB(Y):HTABU):PRINT A$
A640 PRINT CHR$(19);:F0R LL=1 TO Y:PR1KT:NEXT: PRINT TAB ( X > ; AS
■M) PRINT* Y*32*M$j
70: Goes
grid.
80: Goes to subroutines which choose
positions for hunter and person.
90: Sets Jaws' position to new position.
1 00-140: Calculate new position of Jaws
150: Checks this new position is not a
walL
160: If it is a wall, don't move.
1 70-180: Print space at Jaws' old
position.
190-200: Print J at Jaws' new position.
210: Sets Jaws' position to new position.
220: Checks if J landed on P and if so,
goes to subroutine.
230: Chocks if J landed on H and, if so,
goes down program to end game.
250-260: Print score so far.
270: Increases number of moves and
goes back for next one.
280: Pauses so you can see if youVe
been caught.
CLS: PRINT "YOU HAVE BEEN CAUGHT'"
LET S=INT(10000*(T/6)>:PRINT "YOU SCORED '?5
PRINT.-PRINT "ANOTHER 60? IY/N)"
INPUT At: IF A*="V THEN GOTO 20
STOP
LET T=T+1:LET U=U-0.03
G0SU6 390:G0SUB 490
RETURN
LET X=6X:LET Y=5Y : LET A$=" 1
GOSUB 640: GOSUB 440: RETURN
LET K1 = INT(RNDI;)*4J + 1
LET K2=INT(RNDIL)*4)+1
LET TI=K$(Ki>
LET K$(Kn=K$(K2)!LET K$IK2I=T*
RETURN
GOSUB 550
IF X=H AND Y=TY THEN GOTO 440
LET GX=X: LET GY=Y
LET A$="H':GOSUB 640
RETURN
GOSUB 550
LET TM:LET TY=Y
LET AJ="P":G0SU6 640
RETURN
LET F=0:IF MID5iM*(Y> ,X,IK>" ' THEN LET F=l
RETURN
LET X=INTEftNDUl*!4>+2
LET Y=INT<RND<1 ]*9)*2
60SUB 530
IF F=l THEN 60TC 550
RETURN
CLS: LET Ul
FOR Y=l TO 12:LET A$=N$(Yi
GOSUB 640:NEXT )
RETURN
PRINT TA81X,Y);A$
RETURN
FDR 1=1 TO 12: READ «$(Ii:NEXT I
RETURN
DATA "QODOOGOODOODOOOD"
DATA "0 0"
DATA '0 000 00 000 G"
DATA -0 Q"
0000 0"
0"
DATA '0
DATA "0
DATA "D 00 0"
DATA "0 00 0"
DATA "0 00 OOO 0"
DATA "0 0'
DATA "OOOOOODOOCOODOOO"
290-330: Print message and score if
Jaws is caught. Ask if player wants
another game.
Skeleton speech
bubble
Score depends on
number of people
eaten and number of
moves.
340-360: Subroutine which increases
score and chance of hunter moving and
goes to other subroutines to change
keys round and set new person position.
370-380: Subroutine which]
hunter from old position ;
in new one.
390-430: Subroutine which changes
keys around.
440-480: Subroutine for printing hunter,
using another subroutine to choose a
random position for him. Line 450
checks position chosen does not
already have a person in it.
490-520: Subroutine for printing person,
using another subroutine to choose
random position.
530-540: Subroutine i
position X,Ycoi
doesFissettol.
checks if
a wall. If it
550-590: Subroutine which chooses a
random position and checks it is not a
wall.
600-630: Subroutine which prints out
grid.
640-650: Subroutine which prints at
position X,Y.
660-790: Subroutine which reads in data
for grid.
These lines make the grid.
You could change it by
drawing a new grid on
squared paper and
copying it into the
program using O for walls
and spaces for passages.
As chief assistant to Superwitch, your job is to fly across the land on your broomstick
collecting fresh ingredients for her putrid potions. You will know exactly what to
collect each time because she transmits her revolting recipes directly to your
computer screen.
Ingredients such as T (Toe of Newt) and B (Brain of Bat) flash past beneath you as
you fly. Press any key to swoop down and pick one up (you must land right on top of it
to do so). Take care, some of them could be the Broomstick Snatcher in disguise. If you
land on her, you'll lose your stick. (Luckily you start the game with three spares.) You
must collect everything you need before you get to the Cauldron or Superwitch will
nof be pleased with you . . .
10 60SUB 700:GOSUB 620
20 LET HNMsLET M=0: LET FM=50
30 GQSUB 530:LET H=NH
40 G0SUB 550
50 LET EF=0: LET FF=0: LET HH=H
60 FOR 1=1 TO 4: LET G(I)=0:NEXT I
70 FOR 1=1 TO 4: LET A*=PJiI>t":":LET
80 LET Y=1H;G0SUB 610:NEXT I
90 GOSUB 490:GQSU8 430
100 IF M=FM THEN GOTO 250
110 IF EF=1 THEN 60T0 230
20^ INKEVttO)*" THEN GOTO 90
130 LET HH=H-1:G0SUB 510
140 GOSUB 490:G0SUB 430
150 LET H=HH
60 IF H>0 THEN GOTO 130
170 IF P-17 THEN GOSUB 320
180 IF FF=1 THEN GOTO 240
190 GOSUB 530
200 LET HH=H+1:G0SUB 510:80SUB 490
210 LET H=HH: IF H=NH THEN GOTO 90
220 GOSUB 430: GOTO 200
230 LET A$="WELL DONE' SUPERWITCH I
240 LET A$='QUT OF BROOMSTICKS f :"G
250 LET A*="TQQ LATE!"
260 LET X=1:LET Y=15:G0SUB 610
270 STOP
2S0 LET A$="«":LET X=P:G0SUB 610
290 FOR T=l TO 1000: NEXT T
300 LET NW=NW-1:IF NW=0 THEN LET F
310 RETURN
320 IF H*I THEN GOSUB 280:RETUfl
330 LET G(RI=G(R)H
340 LET A$=STR$(G(R)):LET K=l
350 LET Y=1 + R:G0SUB 610 /^ chMgmglhe
360 LET P=19:G0SUB 430 ( lettersinto
370 LET F=0 /graphics symbols.
380 FOR 1=1 TO 4
How the program works
20: Sets up variables. (See if you
Too hard for
you? Make the
game easier by
increasing the
value of FM in line
20. This puts
more objects
between the
start and the
cauldron.
30: H is your height above the
ground. NH is your new height
after a dive.
50: EF and FF are flags which are
set if game is finished. HH is a
variable for holding intermediate
heights on the way up or down.
60: G ( ) counts how many of each
type of object you've picked up.
70-80: Print recipe.
90-120: Move "ground" and objects
across screen until a key is
pressed.
130-160: Keep ground and objects
moving and move witch down to
ground level.
170: If P= 17 then witch has landed
on object.
1 80: Checks flag for end of game.
200-220: Move ground and objects
past until witch reaches new
height.
230-270: End messages.
280-310: Subroutine which shows
W if object is Broomstick Snatcher
in disguise. Increases NW and sets
FF if all broomsticks used up.
320: Subroutine which checks if
you landed on Broomstick
330-350: Increase number of object
R collected and print new total on
screen.
370-420: Check if all ingredients
fortius recipe have been
collected.
390 IF Gfl)M(I) THEN LET F=F+i
Why not change the
ingredients?
NEXT I
IF F=4 THEN LET EM
RETURN
LET BD=8D+i:IF 6D=6 THEN LET GD=1
LET A$=G*fSD)iLET X=1:LET Y=15:6DSUB 610
LET m m ";LET X=P:LET Y=i4:G0SUB 610
LET P=P+1: IF P=20 THEN GQSUB 550
LET X=P:LET A$=C$:60SUB 610
RETURN
LET A$= H -y-=";LET X=16:LET Y=14-HH
GQSUB 610:RETURN
LET A*= u H : LET X=16:LET Y=14-H
GQSUB 610:RETURN
LET NH=INT(RNDU>*5+3)
RETURN
LET R=INT(RNDil)*4)+l
LET W=0: IF RND(l) >0.8 THEN LET W=l
LET C*=LEFTI(P*(R),1):LET P=l
LET
IF M=FM THEN LET C$= u CAULDRON"
RETURN
PRINT TAB (X , Y) ;A$: RETURN T
CLS; PRINT: PRINT
PRINT "THE POTION MUST HAVE" i PRINT
FOR 1=1 TO 4
LET N=INT(RND(1)*3)+2!LET NfI)=N
PRINT:PRINTiN|" ";P$(D
NEXT IiPRINT: PRINT
PRINT "PRESS RETURN TO PLAY"
INPUT X$:CLS:RETURN
DIM PJ(4):DI« N(4):DIN 6(4)
DIM G$(5)
FOR 1=1 TO 4: READ P$(I);NEXT I
DATA "TOES OF NEWTS", "EYES OF LIZARDS", "ROOTS
LET Hl=">====>====>====>====>===="
FOR 1=1 TO 5: LET 6$(6-I)=MlD*(H$, 1,1+20)
NEXT I:LET GD=1
RETURN
430-480: Print new section of
ground and move the object along
to position P. If object is past the
witch (i.e. P=20, then choose a
new object).
490-500: Print witch.
510-520: "Unprint" witch.
530-540: Choose new height for
witch.
550: Chooses an object.
560: Random chance of object
being Broomstick Snatcher.
570: Pats first letter of object in C$
and sets position P to 1.
580: Increases object counter, M.
590: If M equals maximum number
of objects allowed, then CS
changed to "CAULDRON".
610: General subroutine to move
cursor ready for printing.
620-690: Choose and print recipe.
700-270: Set up data for start of
program. P$ holds names of
objects. H$ holds symbols for
ground. Line 750 moves the >
symbols along each time.
What will Superwitch do to you if
you fail? Try adding comments
and penalties to the game
OF IVYVBRAINS ® BATS"
suif ^\
nts r%
Conversion lines
120 IF 1NKEY*="" THEN GOTO 90
120 6ET I$:IF 1$="' THEN GOTO 90
120 U="':IF PEEK(-16384)>127 THEN GET 1$
125 IF 1$="" THEN I
125 *FJ15,1
$530,550,560,650 fteolace RND(l) Kith RND
■ 530,550,560,650 Replace PND(i) with RND (0)
570 LET C*=P*(R, I) : LET P^l
610 PRINT ftT Y , X : A*; RETURN
AfclO PRINT CHR$(1?):FQR LL=1 TO Y: PRINT:
NEXT: PRIMT TAB t X J ; A*: RETURN
• 610 VTA8 < Y > :HTAB ( X > : PRINT A$; RETURN
■ 610 PRINTS V*32tJ(,fl$i: RETURN
▲ 620,690 Replace CLS with PRINT CHR$(1471
• 620,690 Replace CLS with HOME
$700 DIM P*i4,!5):DIM NMhDIM 6(4)
0:710 DIM G*«5,24>
$750 FDR 1=1 TO 5: LET G*(6-1)=HJU TO 1+20!
MieropiizzU
What's happened?
Where are you?
Everything appears fairly normal,
though you do feel a bit sick.
Better take a look round and see if
you can find out what's going on.
(Hint: Try talking to your computer in two word sentences.)
_
How the program works
Lines 30-360: MAIN GAME SECTION
1A RnCUQ 1S7A
10: Goes to subroutine to read in all the data.
20 RESTORErFGR 1=1 TO R:READ D*: NEXT I
GO CLS:PRINT "MICRO PUZZLE"
40 PRINT ''============"
50 PRINT "YOU ARE ";D*
20-50: Get a room description and P™* it.
60 IF R=20 AND F(9)=0 THEN PRINT "YOU ARE CONFRONTED BY A LARGE CAT
70 FOR 1=1 TO 6
80 IF L(I)=R AND F(I)=0 THEN PRINT "THERE IS A ";0*(I>;" HERE,
90 NEXT I
70-90: Check if there is
anything there.
100 PRINT: PRINT "YOU CAN GO "}
110 FOR 1=1 TO LENfRJ(R))
|$120 PRINT l1IDI(R$(R),I,l);","i
130 NEXT I
1 00-1 30: Find which directions you
can go in and print them.
140 PRINT:PRINT "-- 1
50 PRINT M*; LET M$="WHAT?"
150: Default message.
12
160 IF F(16)=l THEN PRINT "SELF DESTRUCT COUNTDOWN AT :";L
170 PRINT "WHAT WILL YOU DO NOW": INPUT Q$
180 LET V$="":LET WJ="":LET VB=0:LET 0B=0:LET LI=LEN(QI>
$190 FOR 1=1 TO LI
200 IF MIDJ(Qi,I,l)=" ' AND VJ="" THEN LET v*=LEFT$(QI,I-l)
210 IF MID$(Q*,I+!,1)<>" " AND V$<>"" THEN LET N$=RISHT$(Q$,LI-I):LET I=LI
220 NEXT I
120-220: Get your instructions and
split them into two words.
230 IF m" THEN LET V*=Q$
*240 FDR 1=1 TO V
250 IF Vmtm THEN LET VB=I
260 NEXT I
230-260: Check fiist word is a verb.
GOSUB 440
270: Goesto subroutine to check second word.
280 IF VB=0 THEN LET VB=V+1
290 IF my" AND QB=0 THEN LET M*= B THAT IS SILLY"
300 IF W$="" THEN LET M$= U I NEED JWO WORDS"
310 IF VB>V AND 0B>0 THEN LET H$="Y0U CAN'T "+Q$
320 IF VB>V AND 0B=0 THEN LET M$="Y0U DO NOT MAKE SENSE'
280-330: Set up messages if
necessary.
IF VB<V AND 0B>0 AND DB<=G THEN LET M$='YQU DO NOT HAVE "+W*
340 LET L-L-l
340: Counter.
350 IF VB>14 THEN GOTO 380 350-380: Goes to
#360 ON VB GOSUB 480, 550, 550,550,550, 550, 550, 550, 760, 790, 790, 860, 920, 970 subroutine
370 GOTO 390 ££55*
#380 ON VB-14 GOSUB 1080,1100,1180,1250,1320,1340,1370,1400,1460,1510,1560
390 IF F ( 1 4 ) =0 AND DO THEN GOTO 20
a 400 IF L<1 THEN LET M*="Y0U HAVE RUN OUT OF TINE. THE
410 PRINT Nf:PRINT "GAME OVER"
420 IF L>0 THEN GOSUB 1510
430 STOP
FOR 1=1 TO M
IF W*=0$II) THEN LET 0B=1
NEXT I
Type I if you want an
inventory (that is, a list of
what you are carrying).
V
440-470: Subroutine which checks if second
word is on computer's object list.
480 PRINT "YOU ARE CARRYING:"
490 FOR 1=1 TO S
500 IF L(I)=25 THEN PRINT OKI);",";
510 NEXT I
520 LET Mf= u ":PRINT
530 GOSUB 1550
540 RETURN
480-540: Subroutine which tells you what
you are carrying.
550-750: Subroutine which deals with
your instructions about which direction
you want to go.
550 LET D=0
560 IF 0B=0 THEN LET D=VB-2
570 IF 0B>24 THEN LET D=0B-24
580 IF R=19 AND D=6 THEN LET D=4
590 IF R=20 AND D=6 THEN LET D=4
600 IF R=20 AND D=5 THEN LET D=3
610 IF F(9)=0 AND R=20 AND D=4 THEN LET M$="THE CAT WILL NOT LET YOU": RETURN
#620 IF R=2 AND L(l)=25 AND D=3 THEN LET H$=M$: RETURN
630 IF R=7 AND F(3)=0 THEN LET M*="AN ANGRY MOUSE BARS YOUR WAY":RETURN
640 LET F(13)=0:LET RL=LEN(R$(R) )
650 FOR 1=1 TO RL
#660 LET U*=MID$(R*(R),I,1)
670 IF <U$="N" AND D=l AND F(13)=0) THEN LET R=R-6:LET F(13)=l
680 IF (U$="S" AND D=2 AND FU3)=0) THEN LET R=R+6:LET F(13)=l
690 IF (U*="W" AND D=3 AND F(!3)=0) THEN LET R=R-1 : LET F(13)=l
700 IF <U$='E" AND D=4 AND F(13)=0) THEN LET R=R+1:.LET F (13) =1
710 NEXT I
If you are usini
a VIC 20, you uill
need extra aeaory
Wis ga*e.
720 LET M$="0K B
730 IF F(13>=0 THEN LET M$="Y0U CANNOT 60
740 IF D<1 THEN LET M*="GO WHERE?"
750 RETURN
Have yon played a few times
and decided you'll never be
able to win? Tou can give
yourself more time if yon like
by putting a higher value for
L in the middle of line 1910.
760 LET Mf="ARE YOU PRACTISES FOR THE OLYMPICS?"
770 IF F (10) =1 AND (R=9 OR R=3) THEN LET M*="IT IS TOO FAR TO JUMP"
780 RETURN
:790 IF 0B=B THEN LET «*=V$+" THE "+W$+M2*: RETURN
800 IF 0B>6 THEN LET MI="I CANNOT GET THE "W:RETURN
810 IF L(0B)OR THEN LET M$="IT IS NOT HERE'
820 IF F(0B)O0 THEN LET M$="WHAT "+«$+"?"
830 IF L(0S)=2S THEN LET M*="Y0U ALREADY HAVE IT"
IF 0B>0 AND L(08)=R AND F(0B)=0 THEN LET LI0B)=25:LET M$=M3$+W$
850 RETURN
860 IF LI0BX25 THEN RETURN
870 LET M*="N0T REALLY!": IF QBOl THEN RETURN
880 PRINT "PUT KEY WHERE"
890 INPUT Wf:IF m>"" THEN G0SUB 440
IF (0B=8 OR W$="0N »+0$(8)) THEN LET M*=N4*:LET FU5)=1:LET L(1)=R
RETURN
IF F i 1 2 ) =0 AND L(7)=25 THEN LET F(11)=1:LET F(3)=0:LET L(3)=0:LET M$=M5$
IF F C 1 ! ) = 1 AND LI7)=25 AND R=20 THEN LET F(9)=1:LET M1=M*+M6*
IF R=21 AND 08=24 THEN LET F(4)=0:LET M*="DUST SETTLES"
IF QB=16 THEN G0SUB 970
RETURN
LET M$=" NOTHING OF INTEREST"
IF 0B=16 AND R=12 THEN LET FI2)=0:LET M$="IT IS A MICRO - VCR"
IF 0B=24 AND R=21 THEN LET M*="S0METHINB INSIDE"
IF 0B=19 AND R=24 THEN G0SUB 1400
IF 0B=23 AND R=12 THEN LET M$=M7f
IF 0B=7 THEN LET M$="IT CONTAINS A LARGE FLY"
IF DB=9 AND R=20 AND F(9)=0 THEN LET M*="IT BITES AND SCRATCHES'"
IF 0B=4 THEN 60SUB 1080
IF 0B=1 AND L(l)=25 THEN LET M$?"THE NUHBER '111' IS ENGRAVED ON IT"
IF 0B=6 AND L(6)=25 THEN LET M$=" THERE IS A BIG RED BUTTON"
RETURN
LET M$=MG$:IF 0B=4 AND L(0B)=25 THEN LET Mf=MFI
RETURN
IF 0BO5 THEN LET M$="CANN0T TIE "+W$:RETURN
IF LI5X25 THEN RETURN
LET Wf="":PRINT "TIE THE THREAD TO WHAT"
INPUT m
IF W$>"" THEN GOSUB 440
LET H$="CANN0T TIE IT TO "+WJ *
IF 0B=13 AND R=9 THEN LET F(5)=1:LET LI5)=0:LET MI=M8$
RETURN
IF 0B=5 AND F(5)=0 THEN LET Mf="IT IS NOT TIED TO ANYTHING!"
IF 0B=5 AND R=9 AND F<5)=1 THEN LET R=8: LET F(10)=0:LET M*="0K":RETU
IF 0B=5 AND R=8 AND F(5)=l THEN LET R=9: LET F(10)=1:LET M$="DK"
1210 IF 0B=13 AND R=9 THEN LET M$="1T IS TOO SMOOTH TO CLIMB"
j 1220 IF 0B=W AND R=19 THEN LET 0B=30:G0SUB 550
910
$920
$930
940
950
960
970
980
990
1000
$1010
1020
1030
1040
1050
1060
1070
$1080
1090
1100
1110
1120
1130
1140
1150
$1160
1170
1180
1190
760-1500: These are subroutines for the
verbs used in the program. Look for the
lines which say RETURN to see where
one ends and another starts.
I Unless yon are using a
C Spectrum, you can leave
( out all the LETs if you like.
1230
1240
1250
1260
1270
1280
1290
1300
1310
1320
1330
1340
01 350
1360
1370
1330
1390
(This program is not
explained as fully as some
of the others so as not to
give you too many clues
about the game. Try
working out what all the
lines do after you have
played a few times.
1410
1420
1430
1440
1450
O1460
O1470
1430
1490
1500
IF-0B=W AND R=20 THEN LET 0B=29:B0SUB 550
RETURN
IF mm OR L(6K>25 THEN RETURN
LET WI="":PRINT "POINT IT AT WHAT"
INPUT m
IF '«$>." THEN G0SUB 440
IF DB=22 THEN LET F(6)=l
LET M*="VERY WELL"
RETURN
IF 0B=3 AND L(0B>=25 THEN LET L(0B>=0:LET M*="MUNCH CHOMP"
RETURN
IF (08=19 OR 08=17) AND R=24 AND LUX25 THEN LET M*=M9*:LET L=L-12:LET F<16)=1
IF (0B=19 OR 0B=17> AND R=24 AND L ( 1) =25 THEN LET F(12)=1:LET M*=MH$
RETURN
IF 0B=3 AND R=7 AND LiOB>=25 THEN LET F(3)=1:LET L(0B)=0:LET B=B+1 : LET M*=MA$
IF L(0B)=25 THEN LET L (08)=R: LET M$="D0NE"
RETURN
IF R024 THEN LET M*="N0THING HERE TO TYPE ON! ":RETURN
IF FI12)=0 THEN LET M*='THIS TERMINAL IS N0N -ACTIVATED": RE TURN
LET H$="THE TERMINAL ECHOES :"+W*
IF 0B=18 THEN LET Mt="C0DEW0RD ACCEPTED': LET FI17)=1
IF 0B=20 THEN LET M$="TERMINAL ID"
RETURN
IF R=14 AND 08-11 AND L(8)=22 THEN LET L(B)=14:LET Mi=MBf+MCf: RETURN
IF R=14 AND 0B=11 AND L(8)=14 THEN LET L(8)=22:LET M$=M8$+MD$
IF F(15)=l THEN LET L(1)=L(8)
IF 0B=21 AND F(6)=l AND L(6)=25 AND R=18 AMD F(17)=l THEN LET B=B+10: LET H*=HE*:LET F(14)»l
RETURN
1510 LET S=0:F0R 1=1 TO 8
1520 IF L(I)=25 THEN LET S=S+1
1530 NEXT I
1540 LET S=S+B: PRINT "YOUR SCORE = "jS
1550 IF F(14)=0 THEN PRINT "PRESS RETURN TO CONTINUE": INPUT 8$
1560 RETURN
1510-1S60: Scoring
subroutine.
1570
1580
iS'O
LET V=24:LET W=31:LET 6=8
DIM R*(24):CIM 0$iWI:DIM Hf(V)
DIM L(G):DIM F(17)
1570-1590: Setup variables and
dim sns ion snsys.
1600 DATA
1610 DATA
1620 DATA
1630 DATA
1640 DATA
1650 DATA
1660 DATA
1670 DATA
1680 DATA
1690 DATA
1700 DATA
1710 DATA
1720 DATA
1730 DATA
1740 DATA
1600-1820: Data lines
"INSIDE THE MOUSEHOLE - IT IS VERY DARK IN HERE"
"AT A MOUSEHOLE IN A CORNER OF THE ROOM", "ON THE EDGE OF A HIGH TABLE 1
"AT THE BACK OF A HALLWAY", "IN A STORAGE ROOM", "IN THE KITCHEN"
"FURTHER DOWN A DARK SMELLY TUNNEL" , "BY A RAILWAY SIDING"
"AT THE BASE OF A TALL PLASTIC TREE ON THE EDGE OF A HIGH TABLE"
"OUTSIDE THE OPEN DOOR OF AN ODDLY PROPORTIONED HOUSE"
"IN A YELLOW FRONT ROOM", "BY A TV SET AND A RECORDER"
"AT THE END OF A DARK TUNNEL"
"BY A LARGE SWITCH CONNECTED TO THE RAILWAY TRACKS"
"ALONGSIDE THE WINDING TRACK"
"AT THE END OF THE LINE-THE TRACK DISAPPEARS THROUSH A HOLE IN THE WALL"
"BELOW A WHOLE WALL OF OVERSIZED VIDEO SCREENS"
"STANDING ON THE MAXIfllSER PAD"
"ON A SHELF OF DISTURBING APPARATUS - THERE IS A STOOL NEARBY"
"ON A SHORT STEP STOOL"
1750 DATA "ON THE FLOOR OF AN OVERTURNED BOX OF BROKEN ELECTRONIC PARTS"
1760 DATA "AT A HOLE IN THE MALL FROM WHICH A RAILWAY LINE EMERGES"
1770 DATA "AT THE BASE OF A SWIVEL CHIAR"
1780 DATA "STANDING ON A COMPUTER TERMINAL WITH A SECRURITY LOCK"
1790 DATA 16,12,3,21,5,17,19,14
1B00 DATA "r l ,"GO","N","S" 1 "W","E","U","D","JUHP","GET","TAKE"/PUT","OPE(l"
1810 DATA "EXAMINE" , "READ" , "TIE" , "CLIMB" /POINT" , "EAT", "UNLOCK" , "LEAVE" , "TYPE"
1820 DATA "PRESS", "SCORE", "SE","SW","SE", "SHE", "WE", "SW","NS","NS","NE","NW"
1830 DATA "EW" , "NW" , "NS" , "NE" , "EW" , "W" , "3" , "S" , "NED" , "EWUD" , "EW","EW","NEil"
1840 DATA "NW" , "KEY" , "CASSETTE" , "CHEESE" , "PAPER" , "THREAD" , "REMOTE-CONTROL"
A1850 DATA "BOTTLE" , "TRAIN" , "CAT", "DOOR" , "SWITCH" , "TUNNEL" , "TREE", "HOLE" , "HOUSE'
1860 DATA "VIDEO" , "COMPUTER" , "GROCER" /TERMINAL" ,"111", "BUTTON" , "MAXIMISER"
1870 DATA "TV" , "BOX" , "NORTH" , "SOUTH" , "WEST" , 'EAST" , "UP" , "DOWN " , "STOOL"
O1910 LET R=11:LET B=S: LET L=100:LET M*="YQU AWAKEN. . " : LET HHf=" TERMINAL ACTIVE"
O 1920 LET M1*="Y0U CANNOT TAKE THE KEY THROUGH" : LET M2$=" EH? VERY FUNNY!"
1930 LET M3$="Y0U HAVE THE " : LET M4$="WELL DONE! ": LET MG$="NOTHING OF INTEREST"
# 1940 LET M5$="A LOUDLY BUZZING FLY FLIES OUT':LET MBI="THE TRAIN CHUGS "
# 1950 LET M7$="IT IS JUST A BOX WITH PHOTO STUCK ON" : LET M9$="»! TAMPER *!"
#1960 LET M8f="IT IS SECURELY TIED. ":LET M6$=' AND THE CAT CHASES AFTER IT!"
#1970 LET MAI- "THE HOUSE RUNS OFF WITH IT. " : LET MF*="TERMINAL PASSWORD"" +0* < 18)
#1980 LET MC*="INTO SIGHT AND STOPS HERE": LET HD*="AWAY AND INTO A TUNNEL"
#1990 LET ME$=°THE MAXIMISER BEAM WORKS. YOU ARE RETURNED TO NORMAL SIZE"
2000 RETURN 1910-2000: Set up messages.
Conversion lines
a 30 Replace CLS with PRINT CHRK147)
• 30 Replace CLS with HOME
. . . FOR SPECTRUM USERS #
120 PRINT R*(R-,I>;
190 FOR 1=1 TO LI-1
200 IF Q$(I)=" " AND V$="" THEN LET V$=Q$i TO 1-1)
IMPORTANT NOTE
for Commodore users.
If you are using a C64 or a
VIC 20. you must leave out
the LETs in lines 400, 1340,
1370 and 1490.
If you are using a C64, you
must leave out all the
spaces in lines 1490, 1 700
and 1850.
I 4
210 IF 8fil + l)<>" ■ AND m>" THEN LET W$=G$iI+l TO );LET I=LW
235 IF LEN(V$i<7 THEN LET Vf=V$+" n ;GOTD 235
360 GOSUB 480*WB=1)+550*(VB>1 AND VB<9)+760*(VB=9)+790#{VB=10 OR VB=U)
f860*(VB=12)m0*iVB=13)+97OMV8=14)
380 GOSUB. 1080*iVB=i5)+1100*(VB=16)+ii80*{VB=l7)+i250*(VB=18)+i320*<VB=l?)+1340*iVB=20)
fl370*(VB=21i + 1400*(VB=22)+1460*<VB=23)+1510*(VB =24>M560*tVB=25)
440 IF LENlHIKH THEN LET W$=W$+" ":GQTD 440
445 FOR 1=2 TO «
660 LET U$=RliR,I)
qaa tc <nn=p no w4=»'nM "+n*ffl)+" H t hpw ift m*="ufm hanf i " ■! ft fhsui-ift i mur
1910 LET R=l 1 : LET B=8:LET L=100:LET f1$="Y0U AWAKEN.."
Lines 620,790,840,920,930,1030,1080.1160,1340,1350,1370,1460,1470,1490
Replace Hi$ to HH$ in these lines with the text in lines 1910 to 1990
eg. 620 IF R=2 AND L ( 1 ) =25 AND D=3 THEN LET M$="YOU CANNOT TAKE THE KEY THROUGH": RETURN
Leave out lines 1920 to 1990
Answers to puzzles
Here are the answers to some of the
puzzles in this book.
Skulls of The Pyramid
To add more skulls, change the 5 in line
260 to a higher number.
The limits of the number to be scored are
set in line 20. As the program stands the
number chosen is between 10 and 39. If
you change the 30 to 40, you will get a
number between 10 and 49. If you also
change the 10 to 20, you will get a number
between 20 and 49.
Monster Wrestling
To increase the number of rounds,
change the number 1 1 in lines 260 and
550 to a higher number. (It must be the
same in both.)
If you increase the number of rounds,
you may want more panics. To get these,
change the number 4 in line 440 to a
higher number.
Jaws
To make the hunter move more often,
decrease the value of U in line 30, for
example to 0.8.
Flying Witches
If you fail the program goes either to line
240 or 250 for a message. Change these to
whatever you like.
U sborne C omputer Books]
"Highly recommended to anyone of any age." Computing Today
"Without question the best general introduction to computing I have ever
seen. "Personal Computer World
, . perhaps the best introduction around . . .outstanding. . ."Educational
Computing
"These books are outstanding. . .they make all other young people's
computer books look meretricious. "Times Educational Supplement
Guide to Computers
Understanding the Micro
Computer and Video Games
Computer Jargon
ComputerGraphics
Insidethe Chip
Computer Programming
Practise Your BASIC
Better BASIC
Machine Code for Beginners
Practical Things to do with a
Microcomputer
Computer Spacegames
Computer Battlegames
Write Your Own Adventure
Programs
Creepy Computer Games
New Titles
Programming Tricks & Skills Professional tips and tricks for better
programming.
Experiments With Your Computer An exciting introduction to scientific
investigation with a microcomputer.
Expanding Your Micro A detailed guide to add-ons and interfaces.
Write Your Own Fantasy Games A step-by-step guide to writing fantasy
games, with program listing,
Weird Computer Games, Computer Spy Games Short listings to run on
most main home computers.
Mystery of Silver Mountain, Island of Secrets Uniqueadventuregame
books containing full program listings.
ISBN D-flbQ2D-fiE7-3
780860"208273
Priated in Kelaiua